import axios from "./index.js";

// 1. 用户相关
/**
 * 1.1 登录请求 - post
 * @param {Object} params - 包含手机号、密码
 * @return {function}
 * */
export function login(params) {
    return axios.post('/user/login', params)
}

/**
 * 1.2 注册请求 - post
 * @param {Object} params - 包含手机号、密码、用户名、头像、个性签名
 * @return {function}
 * */
export function register(params) {
    return axios.post('/user/register', params)
}

/**
 * 1.3 获取用户信息 - post
 * @param {Object} params - 包含用户id
 * @return {function}
 * */
export function getUserInfo(params) {
    return axios.post('/user/get', params)
}

/**
 * 1.4 更新用户信息 - post
 * @param {Object} params - 包含用户id、用户名、头像、个性签名
 * @return {function}
 * */
export function updateUserInfo(params) {
    return axios.post('/user/update', params)
}

/**
 * 1.5 根据知识库id获取用户 - post
 * @param {Object} params - 包含用户id
 * @return {function}
 * */
export function getUserByKnowledgeBaseId(params) {
    return axios.post('/user/knowledge-base/get', params)
}


// 2. 知识库相关
/**
 * 2.1 创建知识库
 * @param {Object} params - 包含知识库id、知识库名称、知识库介绍、知识库icon、知识库背景颜色
 * @return {function}
 * */
export function createKnowledgeBase(params) {
    return axios.post('/knowledge-base/create', params)
}

/**
 * 2.2 根据用户id获取知识库列表
 * @param {Object} params - 包含用户id,如果id为1，则获取公共知识库
 * @return {function}
 * */
export function getKnowledgeBaseByUserId(params) {
    return axios.post('/knowledge-base/user/get', params)
}

/**
 * 2.3 获取用户加入的知识库
 * @param {Object} params - 包含用户id
 * @return {function}
 * */
export function getUserJoinedKnowledgeBase(params) {
    return axios.post('/knowledge-base/get/joined', params)
}

/**
 * 2.4 根据知识库id获取知识库
 * @param {Object} params - 包含知识库id
 * @return {function}
 * */
export function getKnowledgeBaseById(params) {
    return axios.post('/knowledge-base/get', params)
}

/**
 * 2.5 搜索知识库
 * @param {Object} params - 包含搜索关键词
 * @return {function}
 */
export function searchKnowledgeBase(params) {
    return axios.post('/knowledge-base/search', params)
}

/**
 * 2.6 加入知识库
 * @param {Object} params - 包含用户id、知识库id
 * @return {function}
 * */
export function joinKnowledgeBase(params) {
    return axios.post('/knowledge-base/join', params)
}

/**
 * 2.7 将用户从知识库中移除
 * @param {Object} params - 包含知识库id、用户id
 * @return {function}
 * */
export function removeUserFromKnowledgeBase(params) {
    return axios.post('/knowledge-base/user/remove', params)
}

// 3. 文章相关
/**
 * 3.1 根据用户id获取推荐文章
 * @param {Object} params - 包含用户id
 * @return {function}
 * */
export function getRecommendedArticles(params) {
    return axios.post('/article/recommend', params)
}

/**
 * 3.2 根据文章id获取文章
 * @param {Object} params - 包含文章id
 * @return {function}
 * */
export function getArticleById(params) {
    return axios.post('/article/get', params)
}

/**
 * 3.3 保存文章
 * @param {Object} params - 包含文章id、文章标题、文章内容、文章封面、文章标签、文章分类、文章作者、文章作者头像、文章作者昵称
 * @return {function}
 * */
export function saveArticle(params) {
    return axios.post('/article/save-article', params)
}

/**
 * 3.4 根据用户id获取文章
 * @param {Object} params - 包含用户id
 * @return {function}
 * */
export function getArticlesByUserId(params) {
    return axios.post('/article/user/get', params)
}

/**
 * 3.5 获取收藏文章
 * @param params - 包含用户id
 * @return {function}
 */
export function getCollectedArticle(params) {
    return axios.post('/article/get/collect', params)
}

/**
 * 3.6 根据知识库id获取文章
 * @param {Object} params - 包含知识库id
 * @return {function}
 * */
export function getArticleByKnowledgeBaseId(params) {
    return axios.post('/article/knowledge-base/get', params)
}

/**
 * 3.7 搜索文章
 * @param params - 包含搜索关键字
 * @return {function}
 */
export function searchArticle(params) {
    return axios.post('/article/search', params)
}


// 4. 评论相关
/**
 * 4.1 根据文章id获取评论
 * @param {Object} params - 包含文章id
 * @return {function}
 * */
export function getRemarksByArticleId(params) {
    return axios.post('/remark/article/get', params)
}

/**
 * 4.2 保存评论
 * @param {Object} params - 包含文章id、评论内容、评论者id、评论者头像、评论者昵称
 * @return {function}
 * */
export function saveRemark(params) {
    return axios.post('/remark/save', params)
}

// 5. 其他
/**
 * 5.1 上传图片
 * @param {Object} params - 包含图片,formData
 * @return {function}
 * */
export function uploadImage(params) {
    return axios.post('/upload', params, {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    })
}

/**
 * 5.2 点赞
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function like(params) {
    return axios.post('/like/add', params)
}

/**
 * 5.3 取消点赞
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function cancelLike(params) {
    return axios.post('/like/cancel', params)
}

/**
 * 5.4 获取点赞
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function getLike(params) {
    return axios.post('/like/get', params)
}

/**
 * 5.5 获取收藏
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function getCollect(params) {
    return axios.post('/collect/get', params)
}

/**
 * 5.6 获取收藏
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function collect(params) {
    return axios.post('/collect/add', params)
}

/**
 * 5.7 取消收藏
 * @param params - 包含文章id、用户id
 * @return {Promise<axios.AxiosResponse<any>>}
 */
export function cancelCollect(params) {
    return axios.post('/collect/cancel', params)
}

